package com.ly.service;

import com.ly.pojo.domain.CooperationApplicationDO;
import com.ly.pojo.domain.CustomerSupportRequestDO;
import com.ly.pojo.domain.FileDO;
import com.ly.pojo.dto.CooperationApplicationDTO;
import com.ly.pojo.dto.CustomerSupportRequestDTO;
import com.ly.pojo.query.CooperationApplicationQuery;
import com.ly.pojo.query.CustomerSupportRequestQuery;
import com.ly.pojo.query.FileQuery;
import com.ly.pojo.vo.PageResult;
import java.lang.Boolean;
import org.springframework.web.multipart.MultipartFile;

/**
 * 合作与客户支持管理
 *
 * @author Administrator
 * @date 2025-03-07 10:51:13
 */
public interface CooperationAndSupportService {

    /**
     * 提交加盟申请:验证公司名称和联系人是否已存在
     *
     * @param cooperationApplicationDTO 合作加盟申请入参对象
     * @return
     */
    Boolean addCooperationApplication(CooperationApplicationDTO cooperationApplicationDTO);

    /**
     * 获取加盟申请列表:查询所有加盟申请信息
     *
     * @param cooperationApplicationQuery 合作加盟申请查询入参对象
     * @return
     */
    PageResult<CooperationApplicationDO> getCooperationApplicationList(CooperationApplicationQuery cooperationApplicationQuery);

    /**
     * 更新加盟申请状态:根据ID查询加盟申请信息，如果不存在返回失败信息
     *
     * @param cooperationApplicationDTO 合作加盟申请入参对象
     * @return
     */
    Boolean updateCooperationApplicationStatus(CooperationApplicationDTO cooperationApplicationDTO);

    /**
     * 提交客户支持请求:保存客户支持请求信息到数据库
     *
     * @param customerSupportRequestDTO 客户支持请求入参对象
     * @return
     */
    Boolean addCustomerSupportRequest(CustomerSupportRequestDTO customerSupportRequestDTO);

    /**
     * 获取客户支持请求列表:查询所有客户支持请求信息
     *
     * @param customerSupportRequestQuery 客户支持请求查询入参对象
     * @return
     */
    PageResult<CustomerSupportRequestDO> getCustomerSupportRequestList(CustomerSupportRequestQuery customerSupportRequestQuery);

    /**
     * 更新客户支持请求状态:根据ID查询客户支持请求信息，如果不存在返回失败信息
     *
     * @param customerSupportRequestDTO 客户支持请求入参对象
     * @return
     */
    Boolean updateCustomerSupportRequestStatus(CustomerSupportRequestDTO customerSupportRequestDTO);

    /**
     * 上传文件:处理文件上传并保存文件路径到数据库
     *
     * @param file
     * @return
     */
    Boolean uploadFile(MultipartFile file);

    /**
     * 获取文件列表:查询所有文件信息
     *
     * @param fileQuery 文件查询入参对象
     * @return
     */
    PageResult<FileDO> getFileList(FileQuery fileQuery);
}
